﻿Imports SIAVU.Dominio

Namespace Presentacion

    Partial Public Class ProgramarBatch
        Inherits System.Web.UI.Page

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not (Page.IsPostBack) Then
                If Not (cmbMesPlazo.SelectedIndex > 0) Then
                    '//Cargo los valores por default de los combos
                    cmbMesPlazo.SelectedItem = cmbMesPlazo.Items.FindByValue(Date.Now.Month.ToString())
                    cmbAnio.SelectedItem = cmbAnio.Items.FindByValue(Date.Now.Year.ToString())
                End If
                MostrarDatosBatch()
            End If
        End Sub

#Region "Eventos"

        Protected Sub btnAceptar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAceptar.Click
            Page.Validate()
            If (Page.IsValid) Then
                Dim oBatch As Batch = ObtenerBatch()

                oBatch.FechaEjecucion = CDate(fechaBatch.Value.ToString.Split(" ")(0) + " " + horaBatch.Value.ToString.Split(" ")(1))
                oBatch.MesEjecucion = CInt(cmbAnio.SelectedItem.Value.ToString.Trim + cmbMesPlazo.SelectedItem.Value.ToString)

                If (oBatch.guardar() = True) Then
                    Session("MensajeInformacion") = "Se ha guardado de manera exitosa la fecha de ejecución del proceso batch"
                    Response.Redirect("MenuPrincipal.aspx")
                Else
                    'TODO Direccionar a página de error o mostrar mensaje
                End If
            End If
        End Sub

        Private Sub cmbAnio_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbAnio.SelectedIndexChanged
            MostrarDatosBatch()
        End Sub

        Private Sub cmbMesPlazo_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbMesPlazo.SelectedIndexChanged
            MostrarDatosBatch()
        End Sub

#End Region

#Region "Métodos"

        Private Sub MostrarDatosBatch()
            '//Obtengo el registro de la base de datos, y si no existe no hago nada...
            Dim oBatch As Batch = ObtenerBatch()
            If (oBatch IsNot Nothing) Then
                fechaBatch.Value = oBatch.FechaEjecucion
                horaBatch.Value = oBatch.FechaEjecucion
            End If

            '//Seteo la fecha minima
            If (fechaBatch.Value < Date.Now) Then
                fechaBatch.MinDate = fechaBatch.Value
            Else
                fechaBatch.MinDate = Date.Now
            End If

            fechaBatch.VisibleDate = fechaBatch.Value
        End Sub

        Private Function ObtenerBatch() As Batch
            Dim oBatch As Batch
            oBatch = Batch.getByMesEjecucion(CInt(cmbAnio.SelectedItem.Value.ToString.Trim + cmbMesPlazo.SelectedItem.Value.ToString.Trim))

            If (oBatch Is Nothing) Then
                '//Creo una nueva instacia
                oBatch = New Batch
                oBatch.FechaEjecucion = CDate(cmbAnio.SelectedItem.Value.ToString.Trim + "/" + (cmbMesPlazo.SelectedItem.Value - 1).ToString.Trim + "/01")
                oBatch.MesEjecucion = CInt(cmbAnio.SelectedItem.Value.ToString.Trim + (cmbMesPlazo.SelectedItem.Value - 1).ToString.Trim)
            End If

            Return oBatch

        End Function

#End Region

#Region "Validaciones"

        Protected Sub cvGuardarBatch_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles cvGuardarBatch.ServerValidate
            '//No puedo programar el batch para una fecha anterior a la de hoy
            If (fechaBatch.Value < Date.Now.Date) Then
                args.IsValid = False
                cvGuardarBatch.ErrorMessage = "La fecha de ejecución del proceso batch no puede ser menor a la fecha de hoy"
            End If
        End Sub

#End Region

    End Class

End Namespace

